package com.jxud.mapper;

import org.apache.ibatis.jdbc.SQL;

import java.util.Map;
import java.util.Set;

public class OrderSqlProvider {
    // ✅ 白名单：只允许更新指定的安全字段
    public static final Set<String> ALLOWED_COLUMNS = Set.of(
            "order_status",   //状态
            "seller_note",   //备注
            "customer_note"   // 留言
    );

    /**
     * 构建动态 UPDATE SQL
     */
    public String buildUpdateSql(Map<String, Object> params) {
        // 1. 提取参数
        String column = (String) params.get("column");
        String orderId = (String) params.get("orderId");
        String status = (String) params.get("status");

        // 2. 参数校验
        if (orderId == null || orderId.trim().isEmpty()) {
            throw new IllegalArgumentException("orderId 不能为空");
        }
        if (status == null) {
            throw new IllegalArgumentException("status 不能为空");
        }
        if (column == null || column.trim().isEmpty()) {
            throw new IllegalArgumentException("column 不能为空");
        }

        // 3. ⚠️ 安全校验：防止 SQL 注入（关键！）
        if (!ALLOWED_COLUMNS.contains(column)) {
            throw new IllegalArgumentException("非法的列名: " + column);
        }

        // 4. 使用 MyBatis 的 SQL 构建器生成 SQL
        return new SQL()
                .UPDATE("orders")           // UPDATE 表名
                .SET(column + " = #{status}") // 动态列名 + 参数值
                .WHERE("order_id = #{orderId}") // 条件
                .toString();
    }
}
